﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Didsoft.Mvc.Security;
using Boa.HD.AccesoDatos.Entidades.DTO;

namespace Boa.HD.Negocios.Session
{
    public class Global : ISessionContext<object>
    {
        public Global()
        {

        }

        #region session actions

        public void InitializeSession(object UserInfo, string sessionKey)
        {
            //ISesionUsuarioAccesoDatos sesionAD = DataFactory.Current.GetSesionUsuarioAccesoDatos();
            //var sesion = new SesionUsuario()
            //{
            //    FechaPrimerAcceso = SessionContext<object>.DateStarted,
            //    IP = SessionContext<object>.IP,
            //    LlaveSesion = SessionContext<object>.SessionKey,
            //    Navegador = SessionContext<object>.Navigator,
            //    Usuario = (Usuario)UserInfo
            //};
            //sesionAD.Insert(sesion);

            //IHistorialSesionAccesoDatos historialAD = DataFactory.Current.GetHistorialSesionAccesoDatos();
            //HistorialSesion historial = new HistorialSesion()
            //{
            //    Accion = "Index",
            //    Controlador = "Menu",
            //    Parametros = "",
            //    FechaAcceso = DateTime.Now,
            //    URL = "",
            //    Descripcion = "Inicio de Sesion",
            //    SesionUsuario = sesion
            //};
            //historialAD.Insert(historial);


        }

        public void PersistSessionAction(object UserInfo, string sessionKey)
        {
            var s = UserInfo;
        }

        public void DeleteSession(object UserInfo, string sessionKey)
        {
            var s = UserInfo;
        }

        public void CleanTempData(object UserInfo, string sessionKey)
        {
            var s = UserInfo;
        }

        public void PersistSessionAction(string action, string parameters)
        {
            var s = action;
        }

        public void PersistSessionAction(object userinfo, string SessionKey, string controller, string action, string parameters)
        {
            //  Console.WriteLine("Se ha ejecutado la accion : "+action+" del controlador : "+controller);

            //  IDUA_SesionUsuarioAccesoDatos sesionAD = DataFactory.Current.GetDUA_SesionUsuarioAccesoDatos();
            //  DUA_SesionUsuario sesionActiva = sesionAD.BuscarPorLlaveSesion(SessionKey);

            //  IDUA_HistorialSesionAccesoDatos historialAD = DataFactory.Current.GetDUA_HistorialSesionAccesoDatos();
            //  DUA_HistorialSesion historial = new DUA_HistorialSesion()
            //  {
            //      Accion = action,
            //      Controlador = controller,
            //      Parametros = parameters,
            //      FechaAcceso = DateTime.Now,
            //      URL = "",

            //  };


            //  if (sesionActiva == null)
            //  {
            //      sesionActiva = new DUA_SesionUsuario()
            //      {
            //          FechaPrimerAcceso = SessionContext<object>.DateStarted,
            //          IP = SessionContext<object>.IP,
            //          LlaveSesion = SessionContext<object>.SessionKey,
            //          Navegador = SessionContext<object>.Navigator,
            //          Usuario = (DUA_Usuario)userinfo
            //      };
            //      sesionAD.Insert(sesionActiva);
            //  }
            //  else
            //  {
            //      sesionActiva.FechaUltimoAcceso = DateTime.Now;
            //      sesionAD.Update(sesionActiva);
            //  }


            //  historial.SesionUsuario = sesionActiva;
            //  historialAD.Insert(historial);

        }

        #endregion

        public bool IsAuthorizedAction(string controller, string action)
        {
            Console.WriteLine("Puede ejecutar la accion " + action + " del controlador : " + controller + "  ????????");
            return true;
        }


        public static DUAUsuario_DtoBOAPersonal UserInfo()
        {
            return (DUAUsuario_DtoBOAPersonal)SessionContext<object>.UserInfo;
        }



    }
}
